import request from '@/utils/request'

/**
 * 获取参数列表
 * @param {Object} params 查询参数
 * @param {number} [params.page] 页码
 * @param {number} [params.limit] 每页条数
 * @param {string} [params.name] 参数名称
 * @param {string} [params.key] 参数键名
 * @param {string} [params.group] 参数分组
 * @param {number} [params.type] 参数类型（1-系统参数 2-业务参数）
 * @returns {Promise} 请求结果
 */
export function getConfigList(params) {
  return request({
    url: '/system/config/list',
    method: 'get',
    params
  })
}

/**
 * 获取参数详情
 * @param {number} id 参数ID
 * @returns {Promise} 请求结果
 */
export function getConfigDetail(id) {
  return request({
    url: `/system/config/${id}`,
    method: 'get'
  })
}

/**
 * 根据参数键名查询参数值
 * @param {string} key 参数键名
 * @returns {Promise} 请求结果
 */
export function getConfigByKey(key) {
  return request({
    url: `/system/config/key/${key}`,
    method: 'get'
  })
}

/**
 * 新增参数配置
 * @param {Object} data 参数信息
 * @param {string} data.name 参数名称
 * @param {string} data.key 参数键名
 * @param {string} data.value 参数值
 * @param {string} data.group 参数分组
 * @param {number} data.type 参数类型（1-系统参数 2-业务参数）
 * @param {string} [data.remark] 备注
 * @returns {Promise} 请求结果
 */
export function createConfig(data) {
  return request({
    url: '/system/config',
    method: 'post',
    data
  })
}

/**
 * 修改参数配置
 * @param {number} id 参数ID
 * @param {Object} data 参数信息
 * @returns {Promise} 请求结果
 */
export function updateConfig(id, data) {
  return request({
    url: `/system/config/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除参数配置
 * @param {number|Array} ids 参数ID或ID数组
 * @returns {Promise} 请求结果
 */
export function deleteConfig(ids) {
  return request({
    url: '/system/config',
    method: 'delete',
    data: Array.isArray(ids) ? ids : [ids]
  })
}

/**
 * 刷新参数缓存
 * @returns {Promise} 请求结果
 */
export function refreshConfigCache() {
  return request({
    url: '/system/config/refreshCache',
    method: 'get'
  })
}

/**
 * 导出参数
 * @param {Object} params 查询参数
 * @returns {Promise} 请求结果
 */
export function exportConfig(params) {
  return request({
    url: '/system/config/export',
    method: 'get',
    params,
    responseType: 'blob'
  })
}

/**
 * 获取参数分组列表
 * @returns {Promise} 请求结果
 */
export function getConfigGroups() {
  return request({
    url: '/system/config/groups',
    method: 'get'
  })
} 